﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Apa.Control;
using Apa.Data;


namespace Apa.Forms
{
    public partial class frmInicio : System.Web.UI.Page
    {

       public class menu
        {
           public menu(string nombre, string url, List<menu> menu)
            {
                this.nombre = nombre;
                this.url = url;
                this.menuChild = menu;
            }


           public menu(string nombre, string url)
           {
               this.nombre = nombre;
               this.url = url;
              
           }
            public string nombre;
            public string url;
            public List<menu> menuChild;

        }

        public List<menu> listaMenus()
        {
            
              List<menu> menus = new List<menu>();

              Controladora control = new Controladora();
             
              tblUsuario usuario = Session["Usuario"] as tblUsuario;

              if (usuario.tipo == "Administrador")
              {

                  menus.Add(new menu("Crear Cliente", "frmCrearCliente.aspx"));
                  menus.Add(new menu("Crear Programa", "frmCrearPrograma.aspx"));
                  menus.Add(new menu("Consultar Información", "frmConsultarLicencias.aspx"));

              }

              if (usuario.tipo == "AdminPrograma")
              {
                  //int ies = int.Parse(Session["ies"] as string);
                  //int idPrograma = int.Parse(Session["idPrograma"] as string);
                  int idUser = usuario.id;
                  List<tblLicencia> licencia = control.consultarLicenciaXUsuario(idUser);
                  Session.Add("Licencia", licencia);


                  menus.Add(new menu("Crear Usuarios", "frmCrearUsuario.aspx"));
                  menus.Add(new menu("Formulario de registro", "frmActualizarProgramaUsuario.aspx"));
              }


              if (usuario.tipo == "Comun" || usuario.tipo == "AdminPrograma")
              {
                  //int ies = int.Parse(Session["ies"] as string);
                  //int idPrograma = int.Parse(Session["idPrograma"] as string);
                  int idUser = usuario.id;
                  List<tblLicencia> licencia = control.consultarLicenciaXUsuario(idUser);
                  Session.Add("Licencia", licencia);

                  //modulo 1
                  List<tblComponentesxModulo> modulo1 = control.consultarModulosxComponentesXUsuario("REGISTRO CALIFICADO", usuario.id).Where(x=> x.activo==1).ToList();
                 

                  //modulo2
                  List<tblComponentesxModulo> modulo2 = control.consultarModulosxComponentesXUsuario("ALTA CALIDAD", usuario.id).Where(x=> x.activo==1).ToList();
                 
                
                  if (modulo1.Count > 0)
                  {
                      List<menu> listChild= new List<menu>();
                      listChild.Add(new menu("Ingresar nueva resolución", "frmRegistroCalificado.aspx"));
                      listChild.Add(new menu("Consideraciones generales", "frmConsideracionesGenerales.aspx?modulo=1"));
                      listChild.Add(new menu("Cronograma", "frmDetalleCronograma.aspx?modulo=1&tipo=R"));
                      listChild.Add(new menu("Autoevaluación", "frmDetalleCronograma.aspx?modulo=1&tipo=A"));

                      menus.Add(new menu("Registro Calificado", "", listChild));

                      
                  }

                  if (modulo2.Count > 0)
                  {
                      List<menu> listChild = new List<menu>();
                      listChild.Add(new menu("Ingresar nueva resolución", "frmRegistroAltaCalidad.aspx"));
                      listChild.Add(new menu("Consideraciones generales", "frmConsideracionesGenerales.aspx?modulo=2"));
                      listChild.Add(new menu("Cronograma", "frmDetalleCronograma.aspx?modulo=2&tipo=R"));
                      listChild.Add(new menu("Autoevaluación", "frmDetalleCronograma.aspx?modulo=2&tipo=A"));

                      menus.Add(new menu("Acreditación Alta Calidad", "", listChild));
                  }
              }

             // menus.Add(new menu("Consideraciones generales", "frmConsideracionesGenerales.aspx"));
              menus.Add(new menu("Salir", "Salir.aspx"));
            


               return menus;

        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                if (Session["Usuario"] == null)
                {

                    Response.Redirect("Login.aspx");
                }
                else
                {

                    List<menu> menus = listaMenus();
                    cargarMenu(menus);
                }
             

            }
        }



        public void cargarMenu(List<menu> menus)
        {
            var builder = new System.Text.StringBuilder();

            string lista ="";
            string onclick = "";

            foreach (menu menu in  menus)
            {
               
                onclick = "onclick=\"OpenPage('" + menu.url + "')\"";
                if(menu.nombre=="Salir"){
                    onclick = "onclick=\"newDoc()\"";
                    
                }


                if (menu.menuChild!=null )
                {
                    lista = "  <li> <a>" + menu.nombre + "</a> "; 
                    builder.Append(String.Format(lista));
                    lista = "  <ul>";
                    builder.Append(String.Format(lista));
                foreach (menu menuChild in menu.menuChild)
                {
                    onclick = "onclick=\"OpenPage('" + menuChild.url + "')\"";
                    lista = "  <li " + onclick + " ><a>" + menuChild.nombre + "</a> </li>";
                    builder.Append(String.Format(lista));
                }

                    lista = "  </ul> </li>";
                    builder.Append(String.Format(lista));



                }else{

                   lista = "  <li " + onclick + " ><a>" + menu.nombre + "</a> </li>";
                   builder.Append(String.Format(lista));
                }
            }
            ulLista.InnerHtml = builder.ToString();

        }
    }
}